區塊鏈中最為重要的技術就是密碼學Cryptography,其源於希臘語「kryptós 隱藏」和「gráphein 書寫」,因此也有加密貨幣Cryptocurrency。各種通行密碼技術主要有直接儲存法、單向函數法、通行密碼加密碼、通行密碼加鹽法、時戳法、亂數法;密碼學主要可分類為編碼、單向雜湊、非對稱式加密法、對稱式加密法。
單向函數法One-Way Function可避免系統管理員得知使用者的通行密碼,因為Z = F(X)
時,知道Z也難推出X。
雜湊函數,又稱散列函數、哈希函數,是不管輸入多長的字串都可以產生(mapping)固定長度大小的輸出值,並且好的函數不可有重複的,就算改一個字元也會有很大的改變,可用雜湊值是來證實其唯一性,如同人的指紋是唯一的,才有「數位指紋Digital Fingerprint
」之稱。而所謂「碰撞Collision」是指多個不同的輸入值在使用同個函數的情況下,能得出至少兩個相同的輸出值。
單向雜湊算法也被稱為訊息指紋 Message Fingerprint演算法或 訊息摘要 Message Digest演算法,是不需要Private key的。
下面是常使用的幾個典型單向雜湊函數,而目前 MD5, SHA1 都已經可被破解:
• MD5(RFC 1321):產生128位元(比特)固定長度,最大輸入訊息長度為無限。
• SHA-1(Secure Hash Algorithm):產生160位元固定長度。
• SHA2-256:產生256位元固定長度 ,是Bitcoin
使用的Hash function。
• SHA3-256(Keccak-256):產生256位元固定長度,最大輸入訊息長度為無限,是在Ethereum
中使用。
• SHA2-384:產生384位元固定長度。
• SHA2-512:產生512位元固定長度。
提供大家線上測試的工具
公開金鑰加密Public-Key Cryptography,亦稱為非對稱加密Asymmetric cryptography,是用一對金鑰,公開金鑰Public key,也稱加密金鑰Enciphering key,是可以公開出去給所有人知道的,另一把私密金鑰Private key,也稱解密金鑰Deciphering key,是要自己秘密保管的,加密的過程是用公鑰將明文Cleartext or Plaintext(未加密的原始資料或機密資料)轉變為密文Ciphertext(經加密成亂碼的文字),接收者用自己的私鑰解密而還原明文內容。
區塊鏈使用的SHA256所產生的公鑰過程是不可逆的,私鑰可則達到2的256次方個
,有一定的保護資料的安全;當一個個含有交易紀錄的區塊,串成一長串的區塊鏈 時,其區塊間皆以Hash function
塊塊相連,有著連鎖效應,想要竄改交易紀錄須要比挖礦多出非常多倍的算力,因此要51%的算力才能發起攻擊,代價自然不會比當礦工還要值得。
提供大家一份關於區塊鏈技術相關的文章
文章另會分享在stars blog中,歡迎一起交流。